EC-CUBE 2.4.4
[ class tree: EC-CUBE 2.4.4 ] [ index: EC-CUBE 2.4.4 ] [ all elements ]

Source for file SC_CheckError.php

Documentation is available at SC_CheckError.php

  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) 2000-2010 LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * This program is free software; you can redistribute it and/or
  10.  * modify it under the terms of the GNU General Public License
  11.  * as published by the Free Software Foundation; either version 2
  12.  * of the License, or (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  22.  */
  23.  
  24. /*----------------------------------------------------------------------
  25.  * [名称] SC_CheckError
  26.  * [概要] エラーチェッククラス
  27.  *----------------------------------------------------------------------
  28.  */
  29. class SC_CheckError {
  30.     var $arrErr;
  31.     var $arrParam;
  32.  
  33.     // チェック対象の値が含まれる配列をセットする。
  34.     function SC_CheckError($array ""{
  35.         if($array != ""{
  36.             $this->arrParam = $array;
  37.         else {
  38.             $this->arrParam = $_POST;
  39.         }
  40.  
  41.     }
  42.  
  43.     function doFunc($value$arrFunc{
  44.         foreach $arrFunc as $key {
  45.             $this->$key($value);
  46.         }
  47.     }
  48.  
  49.     /* HTMLのタグをチェックする */
  50.     // value[0] = 項目名 value[1] = 判定対象 value[2] = 許可するタグが格納された配列
  51.     function HTML_TAG_CHECK($value{
  52.         if(isset($this->arrErr[$value[1]])) {
  53.             return;
  54.         }
  55.         $this->createParam($value);
  56.         // 含まれているタグを抽出する
  57.         preg_match_all("/<([\/]?[a-z]+)/"$this->arrParam[$value[1]]$arrTag);
  58.  
  59.         foreach($arrTag[1as $val{
  60.             $find false;
  61.  
  62.             foreach($value[2as $tag{
  63.                 if(eregi("^" $tag "$"$val)) {
  64.                     $find true;
  65.                 else {
  66.                 }
  67.             }
  68.  
  69.             if(!$find{
  70.                 $this->arrErr[$value[1]] "※ " $value[0"に許可されていないタグ[" strtoupper($val"]が含まれています。<br />";
  71.                 return;
  72.             }
  73.         }
  74.     }
  75.  
  76.     /* 必須入力の判定 */
  77.     // value[0] = 項目名 value[1] = 判定対象
  78.     function EXIST_CHECK$value {            // 受け取りがない場合エラーを返す
  79.         if(isset($this->arrErr[$value[1]])) {
  80.             return;
  81.         }
  82.         $this->createParam($value);
  83.         ifstrlen($this->arrParam[$value[1]]== ){
  84.             $this->arrErr[$value[1]] "※ " $value[0"が入力されていません。<br />";
  85.         }
  86.     }
  87.  
  88.     /* 必須入力の判定(逆順) */
  89.     // value[0] = 判定対象 value[1] = 項目名
  90.     function EXIST_CHECK_REVERSE$value {            // 受け取りがない場合エラーを返す
  91.         if(isset($this->arrErr[$value[0]])) {
  92.             return;
  93.         }
  94.         $this->createParam($value);
  95.         ifstrlen($this->arrParam[$value[0]]== ){
  96.             $this->arrErr[$value[0]] "※ " $value[0"が入力されていません。<br />";
  97.         }
  98.     }
  99.  
  100.     /* スペース、タブの判定 */
  101.     // value[0] = 項目名 value[1] = 判定対象
  102.     function SPTAB_CHECK$value {            // 受け取りがない場合エラーを返す
  103.         if(isset($this->arrErr[$value[1]])) {
  104.             return;
  105.         }
  106.         $this->createParam($value);
  107.         if(strlen($this->arrParam[$value[1]]!= && ereg("^[  \t\r\n]+$"$this->arrParam[$value[1]])){
  108.             $this->arrErr[$value[1]] "※ " $value[0"にスペース、タブ、改行のみの入力はできません。<br />";
  109.         }
  110.     }
  111.  
  112.     /* スペース、タブの判定 */
  113.     // value[0] = 項目名 value[1] = 判定対象
  114.     function NO_SPTAB$value {            // 受け取りがない場合エラーを返す
  115.         if(isset($this->arrErr[$value[1]])) {
  116.             return;
  117.         }
  118.         $this->createParam($value);
  119.         if(strlen($this->arrParam[$value[1]]!= && mb_ereg("[  \t\r\n]+"$this->arrParam[$value[1]])){
  120.             $this->arrErr[$value[1]] "※ " $value[0"にスペース、タブ、改行は含めないで下さい。<br />";
  121.         }
  122.     }
  123.  
  124.     /* ゼロで開始されている数値の判定 */
  125.     function ZERO_START($value{
  126.         if(isset($this->arrErr[$value[1]])) {
  127.             return;
  128.         }
  129.         $this->createParam($value);
  130.         if(strlen($this->arrParam[$value[1]]!= && ereg("^[0]+[0-9]+$"$this->arrParam[$value[1]])){
  131.             $this->arrErr[$value[1]] "※ " $value[0"に0で始まる数値が入力されています。<br />";
  132.         }
  133.     }
  134.  
  135.     /* 必須選択の判定 */
  136.     // value[0] = 項目名 value[1] = 判定対象
  137.     function SELECT_CHECK$value {            // プルダウンなどで選択されていない場合エラーを返す
  138.         if(isset($this->arrErr[$value[1]])) {
  139.             return;
  140.         }
  141.         $this->createParam($value);
  142.         ifstrlen($this->arrParam[$value[1]]== ){
  143.             $this->arrErr[$value[1]] "※ " $value[0"が選択されていません。<br />";
  144.         }
  145.     }
  146.  
  147.     /* 同一性の判定 */
  148.     // value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1  value[3] = 判定対象文字列2
  149.     function EQUAL_CHECK$value {        // 入力が指定文字数以上ならエラーを返す
  150.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[3]])) {
  151.             return;
  152.         }
  153.         $this->createParam($value);
  154.         // 文字数の取得
  155.         if$this->arrParam[$value[2]] != $this->arrParam[$value[3]]{
  156.             $this->arrErr[$value[2]] "※ " $value[0"と" $value[1"が一致しません。<br />";
  157.         }
  158.     }
  159.  
  160.     /* 値が異なることの判定 */
  161.     // value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1  value[3] = 判定対象文字列2
  162.     function DIFFERENT_CHECK$value {        // 入力が指定文字数以上ならエラーを返す
  163.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[3]])) {
  164.             return;
  165.         }
  166.         $this->createParam($value);
  167.         // 文字数の取得
  168.         if$this->arrParam[$value[2]] == $this->arrParam[$value[3]]{
  169.             $this->arrErr[$value[2]] "※ " $value[0"と" $value[1"は、同じ値を使用できません。<br />";
  170.         }
  171.     }
  172.  
  173.     /* 値の大きさを比較する value[2] < value[3]でなければエラー */
  174.     // value[0] = 項目名1 value[1] = 項目名2 value[2] = 判定対象文字列1  value[3] = 判定対象文字列2
  175.     function GREATER_CHECK($value{        // 入力が指定文字数以上ならエラーを返す
  176.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[3]])) {
  177.             return;
  178.         }
  179.         $this->createParam($value);
  180.         // 文字数の取得
  181.         if($this->arrParam[$value[2]] != "" && $this->arrParam[$value[3]] != "" && ($this->arrParam[$value[2]] $this->arrParam[$value[3]])) {
  182.             $this->arrErr[$value[2]] "※ " $value[0"は" $value[1"より大きい値を入力できません。<br />";
  183.         }
  184.     }
  185.  
  186.  
  187.     /* 最大文字数制限の判定 */
  188.     // value[0] = 項目名 value[1] = 判定対象文字列  value[2] = 最大文字数(半角も全角も1文字として数える)
  189.     function MAX_LENGTH_CHECK$value {        // 入力が指定文字数以上ならエラーを返す
  190.         if(isset($this->arrErr[$value[1]])) {
  191.             return;
  192.         }
  193.         $this->createParam($value);
  194.         // 文字数の取得
  195.         ifmb_strlen($this->arrParam[$value[1]]$value[2{
  196.             $this->arrErr[$value[1]] "※ " $value[0"は" $value[2"字以下で入力してください。<br />";
  197.         }
  198.     }
  199.  
  200.     /* 最小文字数制限の判定 */
  201.     // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小文字数(半角も全角も1文字として数える)
  202.     function MIN_LENGTH_CHECK$value {        // 入力が指定文字数未満ならエラーを返す
  203.         if(isset($this->arrErr[$value[1]])) {
  204.             return;
  205.         }
  206.         $this->createParam($value);
  207.         // 文字数の取得
  208.         ifmb_strlen($this->arrParam[$value[1]]$value[2{
  209.             $this->arrErr[$value[1]] "※ " $value[0"は" $value[2"字以上で入力してください。<br />";
  210.         }
  211.     }
  212.  
  213.     /* 最大文字数制限の判定 */
  214.     // value[0] = 項目名 value[1] = 判定対象文字列  value[2] = 最大数
  215.     function MAX_CHECK$value {        // 入力が最大数以上ならエラーを返す
  216.         if(isset($this->arrErr[$value[1]])) {
  217.             return;
  218.         }
  219.         $this->createParam($value);
  220.         // 文字数の取得
  221.         if($this->arrParam[$value[1]] $value[2{
  222.             $this->arrErr[$value[1]] "※ " $value[0"は" $value[2"以下で入力してください。<br />";
  223.         }
  224.     }
  225.  
  226.     /* 最小数値制限の判定 */
  227.     // value[0] = 項目名 value[1] = 判定対象文字列  value[2] = 最小数
  228.     function MIN_CHECK$value {        // 入力が最小数未満ならエラーを返す
  229.         if(isset($this->arrErr[$value[1]])) {
  230.             return;
  231.         }
  232.         $this->createParam($value);
  233.         if($this->arrParam[$value[1]] $value[2{
  234.             $this->arrErr[$value[1]] "※ " $value[0"は" $value[2"以上で入力してください。<br />";
  235.         }
  236.     }
  237.  
  238.  
  239.     /* 数字の判定 */
  240.     // value[0] = 項目名 value[1] = 判定対象文字列
  241.     function NUM_CHECK$value {                // 入力文字が数字以外ならエラーを返す
  242.         if(isset($this->arrErr[$value[1]])) {
  243.             return;
  244.         }
  245.         $this->createParam($value);
  246.         ifstrlen($this->arrParam[$value[1]]&& !EregI("^[[:digit:]]+$"$this->arrParam[$value[1]])) {
  247.             $this->arrErr[$value[1]] "※ " $value[0"は数字で入力してください。<br />";
  248.         }
  249.     }
  250.  
  251.         /* 小数点を含む数字の判定 */
  252.     // value[0] = 項目名 value[1] = 判定対象文字列
  253.     function NUM_POINT_CHECK$value {                // 入力文字が数字以外ならエラーを返す
  254.         if(isset($this->arrErr[$value[1]])) {
  255.             return;
  256.         }
  257.         $this->createParam($value);
  258.         ifstrlen($this->arrParam[$value[1]]&& !EregI("^[[:digit:]]+[\.]?[[:digit:]]+$"$this->arrParam[$value[1]])) {
  259.             $this->arrErr[$value[1]] "※ " $value[0"は数字で入力してください。<br />";
  260.         }
  261.     }
  262.  
  263.     function ALPHA_CHECK($value{
  264.         if(isset($this->arrErr[$value[1]])) {
  265.             return;
  266.         }
  267.         $this->createParam($value);
  268.         ifstrlen($this->arrParam[$value[1]]&& !EregI("^[[:alpha:]]+$"$this->arrParam[$value[1]])) {
  269.             $this->arrErr[$value[1]] "※ " $value[0"は半角英字で入力してください。<br />";
  270.         }
  271.     }
  272.  
  273.     /* 電話番号の判定 (数字チェックと文字数チェックを実施する。)
  274.         value[0] : 項目名
  275.         value[1] : 電番1項目目
  276.         value[2] : 電番2項目目
  277.         value[3] : 電番3項目目
  278.         value[4] : 文字数制限
  279.     */
  280.     function TEL_CHECK($value{
  281.         if(isset($this->arrErr[$value[1]])) {
  282.             return;
  283.         }
  284.         $this->createParam($value);
  285.         $cnt 0;
  286.  
  287.         for($i 1$i <= 3$i++{
  288.             if(strlen($this->arrParam[$value[$i]]0{
  289.                 $cnt++;
  290.             }
  291.         }
  292.  
  293.         // すべての項目が満たされていない場合を判定(一部だけ入力されている状態)
  294.         if($cnt && $cnt 3{
  295.             $this->arrErr[$value[1]] .= "※ " $value[0"はすべての項目を入力してください。<br />";
  296.         }
  297.  
  298.         $total_count 0;
  299.         for($i 1$i <= 3$i++{
  300.             if(strlen($this->arrParam[$value[$i]]&& strlen($this->arrParam[$value[$i]]$value[4]{
  301.                 $this->arrErr[$value[$i]] .= "※ " $value[0$i "は" $value[4"字以内で入力してください。<br />";
  302.             else if (strlen($this->arrParam[$value[$i]]&& !EregI("^[[:digit:]]+$"$this->arrParam[$value[$i]])) {
  303.                 $this->arrErr[$value[$i]] .= "※ " $value[0$i "は数字で入力してください。<br />";
  304.             }
  305.             $total_count += strlen($this->arrParam[$value[$i]]);
  306.         }
  307.  
  308.         // 合計値チェック
  309.         if ($total_count TEL_LEN{
  310.             $this->arrErr[$value[3]] .= "※ " $value[0"は" TEL_LEN "文字以内で入力してください。<br />";
  311.         }
  312.     }
  313.  
  314.     /* 関連項目が完全に満たされているか判定
  315.         value[0]        : 項目名
  316.         value[1]        : 判定対象要素名
  317.     */
  318.     function FULL_EXIST_CHECK($value{
  319.         $max count($value);
  320.         $this->createParam($value);
  321.         // 既に該当項目にエラーがある場合は、判定しない。
  322.         for($i 1$i $max$i++{
  323.             if(isset($this->arrErr[$value[$i]])) {
  324.                 return;
  325.             }
  326.         }
  327.  
  328.         $blank false;
  329.  
  330.         // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
  331.         for($i 1$i $max$i++{
  332.             if(strlen($this->arrParam[$value[$i]]<= 0{
  333.                 $blank true;
  334.             }
  335.         }
  336.  
  337.         if($blank{
  338.             $this->arrErr[$value[1]] "※ " $value[0"が入力されていません。<br />";
  339.         }
  340.     }
  341.  
  342.     /* 関連項目がすべて満たされているか判定
  343.         value[0]        : 項目名
  344.         value[1]        : 判定対象要素名
  345.     */
  346.     function ALL_EXIST_CHECK($value{
  347.         $max count($value);
  348.  
  349.         // 既に該当項目にエラーがある場合は、判定しない。
  350.         for($i 1$i $max$i++{
  351.             if(isset($this->arrErr[$value[$i]])) {
  352.                 return;
  353.             }
  354.         }
  355.  
  356.         $blank false;
  357.         $input false;
  358.  
  359.         // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
  360.         for($i 1$i $max$i++{
  361.             if(strlen($this->arrParam[$value[$i]]<= 0{
  362.                 $blank true;
  363.             else {
  364.                 $input true;
  365.             }
  366.         }
  367.  
  368.         if($blank && $input{
  369.             $this->arrErr[$value[1]] "※ " $value[0"はすべての項目を入力して下さい。<br />";
  370.         }
  371.     }
  372.  
  373.         /* 関連項目がどれか一つ満たされているか判定
  374.         value[0]        : 項目名
  375.         value[1]        : 判定対象要素名
  376.     */
  377.     function ONE_EXIST_CHECK($value{
  378.         $max count($value);
  379.         $this->createParam($value);
  380.         // 既に該当項目にエラーがある場合は、判定しない。
  381.         for($i 1$i $max$i++{
  382.             if(isset($this->arrErr[$value[$i]])) {
  383.                 return;
  384.             }
  385.         }
  386.  
  387.         $input false;
  388.  
  389.         // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
  390.         for($i 1$i $max$i++{
  391.             if(strlen($this->arrParam[$value[$i]]0{
  392.                 $input true;
  393.             }
  394.         }
  395.  
  396.         if(!$input{
  397.             $this->arrErr[$value[1]] "※ " $value[0"が入力されていません。<br />";
  398.         }
  399.     }
  400.  
  401.     /* 上位の項目が満たされているか判定
  402.         value[0]        : 項目名
  403.         value[1]        : 判定対象要素名
  404.     */
  405.     function TOP_EXIST_CHECK($value{
  406.         $max count($value);
  407.         $this->createParam($value);
  408.  
  409.         // 既に該当項目にエラーがある場合は、判定しない。
  410.         for($i 1$i $max$i++{
  411.             if(isset($this->arrErr[$value[$i]])) {
  412.                 return;
  413.             }
  414.         }
  415.  
  416.         $blank false;
  417.         $error false;
  418.  
  419.         // すべての項目がブランクでないか、すべての項目が入力されていない場合はエラーとする。
  420.         for($i 1$i $max$i++{
  421.             if(strlen($this->arrParam[$value[$i]]<= 0{
  422.                 $blank true;
  423.             else {
  424.                 if($blank{
  425.                     $error true;
  426.                 }
  427.             }
  428.         }
  429.  
  430.         if($error{
  431.             $this->arrErr[$value[1]] "※ " $value[0"は先頭の項目から順番に入力して下さい。<br />";
  432.         }
  433.     }
  434.  
  435.  
  436.     /* カタカナの判定 */
  437.     // value[0] = 項目名 value[1] = 判定対象文字列
  438.     function KANA_CHECK$value {                // 入力文字がカナ以外ならエラーを返す
  439.         if(isset($this->arrErr[$value[1]])) {
  440.             return;
  441.         }
  442.         $this->createParam($value);
  443.         if(strlen($this->arrParam[$value[1]]&& mb_ereg("^[ァ-ヶヲ-゚ー]+$"$this->arrParam[$value[1]])) {
  444.             $this->arrErr[$value[1]] "※ " $value[0"はカタカナで入力してください。<br />";
  445.         }
  446.     }
  447.  
  448.     /* カタカナの判定2(タブ、スペースは許可する) */
  449.     // value[0] = 項目名 value[1] = 判定対象文字列
  450.     function KANABLANK_CHECK$value {                // 入力文字がカナ以外ならエラーを返す
  451.         if(isset($this->arrErr[$value[1]])) {
  452.             return;
  453.         }
  454.         $this->createParam($value);
  455.         if(strlen($this->arrParam[$value[1]]&& mb_ereg("^([  \t\r\n]|[ァ-ヶ]|[ー])+$"$this->arrParam[$value[1]])) {
  456.             $this->arrErr[$value[1]] "※ " $value[0"はカタカナで入力してください。<br />";
  457.         }
  458.     }
  459.  
  460.     /* 英数字の判定 */
  461.     // value[0] = 項目名 value[1] = 判定対象文字列
  462.     function ALNUM_CHECK$value {                // 入力文字が英数字以外ならエラーを返す
  463.         if(isset($this->arrErr[$value[1]])) {
  464.             return;
  465.         }
  466.         $this->createParam($value);
  467.         ifstrlen($this->arrParam[$value[1]]&& EregI("^[[:alnum:]]+$"$this->arrParam[$value[1]] ) ) {
  468.             $this->arrErr[$value[1]] "※ " $value[0"は英数字で入力してください。<br />";
  469.         }
  470.     }
  471.  
  472.     /* 英数記号の判定 */
  473.     // value[0] = 項目名 value[1] = 判定対象文字列
  474.     function GRAPH_CHECK$value {                // 入力文字が英数記号以外ならエラーを返す
  475.         if(isset($this->arrErr[$value[1]])) {
  476.             return;
  477.         }
  478.         $this->createParam($value);
  479.         ifstrlen($this->arrParam[$value[1]]&& EregI("^[[:graph:]]+$"$this->arrParam[$value[1]] ) ) {
  480.             $this->arrErr[$value[1]] "※ " $value[0"は英数記号で入力してください。<br />";
  481.         }
  482.     }
  483.  
  484.     /* 必須選択の判定 */
  485.     // value[0] = 項目名 value[1] = 判定対象
  486.     function ZERO_CHECK$value {                // 入力値で0が許されない場合エラーを返す
  487.         $this->createParam($value);
  488.         if($this->arrParam[$value[1]] == "0" ){
  489.             $this->arrErr[$value[1]] "※ " $value[0"は1以上を入力してください。<br />";
  490.         }
  491.     }
  492.  
  493.     /* 桁数の判定 (最小最大)*/
  494.     // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 最小桁数 value[3] = 最大桁数
  495.     function NUM_RANGE_CHECK$value {        // 入力文字の桁数判定 → 最小桁数<入力文字列<最大桁数
  496.         if(isset($this->arrErr[$value[1]])) {
  497.             return;
  498.         }
  499.         $this->createParam($value);
  500.         // $this->arrParam[$value[0]] = mb_convert_kana($this->arrParam[$value[0]], "n");
  501.         $count strlen($this->arrParam[$value[1]]);
  502.         if( ( $count && $value[2$count || $value[3$count {
  503.             $this->arrErr[$value[1]] =  "※ $value[0]$value[2]桁〜$value[3]桁で入力して下さい。<br />";
  504.         }
  505.     }
  506.  
  507.     /* 桁数の判定 */
  508.     // value[0] = 項目名 value[1] = 判定対象文字列 value[2] = 桁数
  509.     function NUM_COUNT_CHECK$value {        // 入力文字の桁数判定 → 入力文字列 = 桁数 以外はNGの場合
  510.         if(isset($this->arrErr[$value[1]])) {
  511.             return;
  512.         }
  513.         $this->createParam($value);
  514.         $count strlen($this->arrParam[$value[1]]);
  515.         if(($count 0&& $count != $value[2{
  516.             $this->arrErr[$value[1]] =  "※ $value[0]$value[2]桁で入力して下さい。<br />";
  517.         }
  518.     }
  519.  
  520.     /* メールアドレス形式の判定 */
  521.     // value[0] = 項目名 value[1] = 判定対象メールアドレス
  522.     function EMAIL_CHECK$value ){                // メールアドレスを正規表現で判定する
  523.         if(isset($this->arrErr[$value[1]])) {
  524.             return;
  525.         }
  526.         $this->createParam($value);
  527.         if(strlen($this->arrParam[$value[1]]&& !ereg("^[^@]+@[^.^@]+\..+"$this->arrParam[$value[1]])) {
  528.             $this->arrErr[$value[1]] "※ " $value[0"の形式が不正です。<br />";
  529.         }
  530.     }
  531.  
  532.     /* メールアドレスに使用できる文字の判定 */
  533.     //  value[0] = 項目名 value[1] = 判定対象メールアドレス
  534.     function EMAIL_CHAR_CHECK$value ){                // メールアドレスに使用する文字を正規表現で判定する
  535.         if(isset($this->arrErr[$value[1]])) {
  536.             return;
  537.         }
  538.         $this->createParam($value);
  539.         if(strlen($this->arrParam[$value[1]]&& !ereg("^[a-zA-Z0-9_\.@\+\?-]+$",$this->arrParam[$value[1]]) ) {
  540.             $this->arrErr[$value[1]] "※ " $value[0"に使用する文字を正しく入力してください。<br />";
  541.         }
  542.     }
  543.  
  544.     /* URL形式の判定 */
  545.     //  value[0] = 項目名 value[1] = 判定対象URL
  546.     function URL_CHECK$value ){                // URLを正規表現で判定する。デフォルトでhttp://があってもOK
  547.          if(isset($this->arrErr[$value[1]])) {
  548.             return;
  549.         }
  550.         ifstrlen($this->arrParam[$value[1]]&& !ereg"^https?://+($|[a-zA-Z0-9_~=:&\?\.\/-])+$"$this->arrParam[$value[1]] ) ) {
  551.             $this->arrErr[$value[1]] "※ " $value[0"を正しく入力してください。<br />";
  552.         }
  553.     }
  554.  
  555.     /* 拡張子の判定 */
  556.     // value[0] = 項目名 value[1] = 判定対象 value[2]=array(拡張子)
  557.     function FILE_EXT_CHECK$value {            // 受け取りがない場合エラーを返す
  558.         if(isset($this->arrErr[$value[1]]|| count($value[2]== 0{
  559.             return;
  560.         }
  561.         $this->createParam($value);
  562.  
  563.         if($_FILES[$value[1]]['name'!= "" {
  564.             $errFlag 1;
  565.             $array_ext explode("."$_FILES[$value[1]]['name']);
  566.             $ext $array_extcount $array_ext ];
  567.             $ext strtolower($ext);
  568.  
  569.             $strExt "";
  570.  
  571.             foreach $value[2as $checkExt ){
  572.                 if $ext == $checkExt{
  573.                     $errFlag 0;
  574.                 }
  575.  
  576.                 if($strExt == ""{
  577.                     $strExt.= $checkExt;
  578.                 else {
  579.                     $strExt.= "$checkExt";
  580.                 }
  581.             }
  582.         }
  583.         if ($errFlag == 1{
  584.             $this->arrErr[$value[1]] "※ " $value[0"で許可されている形式は、" $strExt "です。<br />";
  585.         }
  586.     }
  587.  
  588.     /* ファイルが存在するかチェックする */
  589.     // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定ディレクトリ
  590.     function FIND_FILE$value {            // 受け取りがない場合エラーを返す
  591.         if(isset($this->arrErr[$value[1]])) {
  592.             return;
  593.         }
  594.  
  595.         $this->createParam($value);
  596.         if($value[2!= ""{
  597.             $dir $value[2];
  598.         else {
  599.             $dir IMAGE_SAVE_DIR;
  600.         }
  601.  
  602.         $path $dir "/" $this->arrParam[$value[1]];
  603.         $path ereg_replace("//""/"$path);
  604.  
  605.         if($this->arrParam[$value[1]] != "" && !file_exists($path)){
  606.             $this->arrErr[$value[1]] "※ " $path "が見つかりません。<br />";
  607.         }
  608.     }
  609.  
  610.     /* ファイルが上げられたか確認 */
  611.     // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定サイズ(KB)
  612.     function FILE_EXIST_CHECK$value {            // 受け取りがない場合エラーを返す
  613.         if(isset($this->arrErr[$value[1]])) {
  614.             return;
  615.         }
  616.         $this->createParam($value);
  617.         if(!($_FILES[$value[1]]['size'!= "" && $_FILES[$value[1]]['size'0)){
  618.             $this->arrErr[$value[1]] "※ " $value[0"をアップロードして下さい。<br />";
  619.         }
  620.     }
  621.  
  622.     /* ファイルサイズの判定 */
  623.     // value[0] = 項目名 value[1] = 判定対象  value[2] = 指定サイズ(KB)
  624.     function FILE_SIZE_CHECK$value {            // 受け取りがない場合エラーを返す
  625.         if(isset($this->arrErr[$value[1]])) {
  626.             return;
  627.         }
  628.         $this->createParam($value);
  629.         if$_FILES[$value[1]]['size'$value[2*  1024 ){
  630.             $byte "KB";
  631.             if$value[2>= 1000 {
  632.                 $value[2$value[21000;
  633.                 $byte "MB";
  634.             }
  635.             $this->arrErr[$value[1]] "※ " $value[0"のファイルサイズは" $value[2$byte "以下のものを使用してください。<br />";
  636.         }
  637.     }
  638.  
  639.     /* ファイル名の判定 */
  640.     // value[0] = 項目名 value[1] = 判定対象文字列
  641.     function FILE_NAME_CHECK$value {                // 入力文字が英数字,"_","-"以外ならエラーを返す
  642.         if(isset($this->arrErr[$value[1]])) {
  643.             return;
  644.         }
  645.         $this->createParam($value);
  646.         ifstrlen($_FILES[$value[1]]['name']&& EregI("^[[:alnum:]_\.-]+$"$_FILES[$value[1]]['name']) ) {
  647.             $this->arrErr[$value[1]] "※ " $value[0"のファイル名に日本語やスペースは使用しないで下さい。<br />";
  648.         }
  649.     }
  650.  
  651.     /* ファイル名の判定(アップロード以外の時) */
  652.     // value[0] = 項目名 value[1] = 判定対象文字列
  653.     function FILE_NAME_CHECK_BY_NOUPLOAD$value {            // 入力文字が英数字,"_","-"以外ならエラーを返す
  654.         if(isset($this->arrErr[$value[1]])) {
  655.             return;
  656.         }
  657.         $this->createParam($value);
  658.         ifstrlen($this->arrParam[$value[1]]&& EregI("^[[:alnum:]_\.-]+$"$this->arrParam[$value[1]]|| EregI("[\\]" ,$this->arrParam[$value[1]])) {
  659.             $this->arrErr[$value[1]] "※ " $value[0"のファイル名に日本語やスペースは使用しないで下さい。<br />";
  660.         }
  661.     }
  662.  
  663.     //日付チェック
  664.     // value[0] = 項目名
  665.     // value[1] = YYYY
  666.     // value[2] = MM
  667.     // value[3] = DD
  668.     function CHECK_DATE($value{
  669.         if(isset($this->arrErr[$value[1]])) {
  670.             return;
  671.         }
  672.         $this->createParam($value);
  673.         // 少なくともどれか一つが入力されている。
  674.         if($this->arrParam[$value[1]] || $this->arrParam[$value[2]] || $this->arrParam[$value[3]] 0{
  675.             // 年月日のどれかが入力されていない。
  676.             if(!(strlen($this->arrParam[$value[1]]&& strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]0)) {
  677.                 $this->arrErr[$value[1]] "※ " $value[0"はすべての項目を入力して下さい。<br />";
  678.             else if checkdate($this->arrParam[$value[2]]$this->arrParam[$value[3]]$this->arrParam[$value[1]])) {
  679.                 $this->arrErr[$value[1]] "※ " $value[0"が正しくありません。<br />";
  680.             }
  681.         }
  682.     }
  683.  
  684.     //日付チェック
  685.     // value[0] = 項目名
  686.     // value[1] = YYYY
  687.     // value[2] = MM
  688.     // value[3] = DD
  689.     // value[4] = HH
  690.     // value[5] = mm
  691.     function CHECK_DATE2($value{
  692.         if(isset($this->arrErr[$value[1]])) {
  693.             return;
  694.         }
  695.         $this->createParam($value);
  696.         // 少なくともどれか一つが入力されている。
  697.         if($this->arrParam[$value[1]] || $this->arrParam[$value[2]] || $this->arrParam[$value[3]] || $this->arrParam[$value[4]] >= || $this->arrParam[$value[5]] >= 0{
  698.             // 年月日時のどれかが入力されていない。
  699.             if(!(strlen($this->arrParam[$value[1]]&& strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]&& strlen($this->arrParam[$value[4]]&& strlen($this->arrParam[$value[5]])) {
  700.                 $this->arrErr[$value[1]] "※ " $value[0"はすべての項目を入力して下さい。<br />";
  701.             else if checkdate($this->arrParam[$value[2]]$this->arrParam[$value[3]]$this->arrParam[$value[1]])) {
  702.                 $this->arrErr[$value[1]] "※ " $value[0"が正しくありません。<br />";
  703.             }
  704.         }
  705.     }
  706.  
  707.     //日付チェック
  708.     // value[0] = 項目名
  709.     // value[1] = YYYY
  710.     // value[2] = MM
  711.     function CHECK_DATE3($value{
  712.         if(isset($this->arrErr[$value[1]])) {
  713.             return;
  714.         }
  715.         $this->createParam($value);
  716.         // 少なくともどれか一つが入力されている。
  717.         if($this->arrParam[$value[1]] || $this->arrParam[$value[2]] 0{
  718.             // 年月日時のどれかが入力されていない。
  719.             if(!(strlen($this->arrParam[$value[1]]&& strlen($this->arrParam[$value[2]]0)) {
  720.                 $this->arrErr[$value[1]] "※ " $value[0"はすべての項目を入力して下さい。<br />";
  721.             else if checkdate($this->arrParam[$value[2]]1$this->arrParam[$value[1]])) {
  722.                 $this->arrErr[$value[1]] "※ " $value[0"が正しくありません。<br />";
  723.             }
  724.         }
  725.     }
  726.  
  727.     /*-----------------------------------------------------------------*/
  728.     /*    CHECK_SET_TERM
  729.     /*    年月日に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
  730.     /* 引数 (開始年,開始月,開始日,終了年,終了月,終了日)
  731.     /* 戻値 array(1,2,3)
  732.     /*          1.開始年月日 (YYYYMMDD 000000)
  733.     /*            2.終了年月日 (YYYYMMDD 235959)
  734.     /*            3.エラー ( 0 = OK, 1 = NG )
  735.     /*-----------------------------------------------------------------*/
  736.     // value[0] = 項目名1
  737.     // value[1] = 項目名2
  738.     // value[2] = start_year
  739.     // value[3] = start_month
  740.     // value[4] = start_day
  741.     // value[5] = end_year
  742.     // value[6] = end_month
  743.     // value[7] = end_day
  744.     function CHECK_SET_TERM ($value{
  745.  
  746.         // 期間指定
  747.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[5]])) {
  748.             return;
  749.         }
  750.         $this->createParam($value);
  751.         $error 0;
  752.         if ( (strlen($this->arrParam[$value[2]]|| strlen($this->arrParam[$value[3]]|| strlen($this->arrParam[$value[4]] 0&& checkdate($this->arrParam[$value[3]]$this->arrParam[$value[4]]$this->arrParam[$value[2]]) ) {
  753.             $this->arrErr[$value[2]] "※ " $value[0"を正しく指定してください。<br />";
  754.         }
  755.         if ( (strlen($this->arrParam[$value[5]]|| strlen($this->arrParam[$value[6]]|| strlen($this->arrParam[$value[7]] 0&& checkdate($this->arrParam[$value[6]]$this->arrParam[$value[7]]$this->arrParam[$value[5]]) ) {
  756.             $this->arrErr[$value[5]] "※ " $value[1"を正しく指定してください。<br />";
  757.         }
  758.         if ( (strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]&& strlen($this->arrParam[$value[4]] 0&&  (strlen($this->arrParam[$value[5]]|| strlen($this->arrParam[$value[6]]|| strlen($this->arrParam[$value[7]] 0) ){
  759.  
  760.             $date1 $this->arrParam[$value[2]] .sprintf("%02d"$this->arrParam[$value[3]].sprintf("%02d",$this->arrParam[$value[4]]."000000";
  761.             $date2 $this->arrParam[$value[5]] .sprintf("%02d"$this->arrParam[$value[6]].sprintf("%02d",$this->arrParam[$value[7]]."235959";
  762.  
  763.             if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[5]] == ""&& $date1 $date2{
  764.                 $this->arrErr[$value[2]] "※ " .$value[0]"と" .$value[1]"の期間指定が不正です。<br />";
  765.             }
  766.         }
  767.     }
  768.  
  769.     /*-----------------------------------------------------------------*/
  770.     /*    CHECK_SET_TERM2
  771.     /*    年月日時に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
  772.     /* 引数 (開始年,開始月,開始日,開始時間,開始分,開始秒,
  773.     /*        終了年,終了月,終了日,終了時間,終了分,終了秒)
  774.     /* 戻値 array(1,2,3)
  775.     /*          1.開始年月日 (YYYYMMDDHHmmss)
  776.     /*            2.終了年月日 (YYYYMMDDHHmmss)
  777.     /*            3.エラー ( 0 = OK, 1 = NG )
  778.     /*-----------------------------------------------------------------*/
  779.     // value[0] = 項目名1
  780.     // value[1] = 項目名2
  781.     // value[2] = start_year
  782.     // value[3] = start_month
  783.     // value[4] = start_day
  784.     // value[5] = start_hour
  785.     // value[6] = start_minute
  786.     // value[7] = start_second
  787.     // value[8] = end_year
  788.     // value[9] = end_month
  789.     // value[10] = end_day
  790.     // value[11] = end_hour
  791.     // value[12] = end_minute
  792.     // value[13] = end_second
  793.  
  794.     /*-----------------------------------------------------------------*/
  795.     function CHECK_SET_TERM2 ($value{
  796.  
  797.         // 期間指定
  798.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[8]])) {
  799.             return;
  800.         }
  801.         $this->createParam($value);
  802.         $error 0;
  803.         if ( (strlen($this->arrParam[$value[2]]|| strlen($this->arrParam[$value[3]]|| strlen($this->arrParam[$value[4]] || strlen($this->arrParam[$value[5]]0&& checkdate($this->arrParam[$value[3]]$this->arrParam[$value[4]]$this->arrParam[$value[2]]) ) {
  804.             $this->arrErr[$value[2]] "※ " $value[0"を正しく指定してください。<br />";
  805.         }
  806.         if ( (strlen($this->arrParam[$value[8]]|| strlen($this->arrParam[$value[9]]|| strlen($this->arrParam[$value[10]] || strlen($this->arrParam[$value[11]] 0&& checkdate($this->arrParam[$value[9]]$this->arrParam[$value[10]]$this->arrParam[$value[8]]) ) {
  807.             $this->arrErr[$value[8]] "※ " $value[1"を正しく指定してください。<br />";
  808.         }
  809.         if ( (strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]&& strlen($this->arrParam[$value[4]] && strlen($this->arrParam[$value[5]] 0&&  (strlen($this->arrParam[$value[8]]|| strlen($this->arrParam[$value[9]]|| strlen($this->arrParam[$value[10]] || strlen($this->arrParam[$value[11]] 0) ){
  810.  
  811.             $date1 $this->arrParam[$value[2]] .sprintf("%02d"$this->arrParam[$value[3]].sprintf("%02d",$this->arrParam[$value[4]].sprintf("%02d",$this->arrParam[$value[5]]).sprintf("%02d",$this->arrParam[$value[6]]).sprintf("%02d",$this->arrParam[$value[7]]);
  812.             $date2 $this->arrParam[$value[8]] .sprintf("%02d"$this->arrParam[$value[9]].sprintf("%02d",$this->arrParam[$value[10]].sprintf("%02d",$this->arrParam[$value[11]]).sprintf("%02d",$this->arrParam[$value[12]]).sprintf("%02d",$this->arrParam[$value[13]]);
  813.  
  814.             if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[8]] == ""&& $date1 $date2{
  815.                 $this->arrErr[$value[2]] "※ " .$value[0]"と" .$value[1]"の期間指定が不正です。<br />";
  816.             }
  817.             if($date1 == $date2{
  818.                 $this->arrErr[$value[2]] "※ " .$value[0]"と" .$value[1]"の期間指定が不正です。<br />";
  819.             }
  820.  
  821.         }
  822.     }
  823.  
  824.     /*-----------------------------------------------------------------*/
  825.     /*    CHECK_SET_TERM3
  826.     /*    年月に別れた2つの期間の妥当性をチェックし、整合性と期間を返す
  827.     /* 引数 (開始年,開始月,終了年,終了月)
  828.     /* 戻値 array(1,2,3)
  829.     /*          1.開始年月日 (YYYYMMDD 000000)
  830.     /*            2.終了年月日 (YYYYMMDD 235959)
  831.     /*            3.エラー ( 0 = OK, 1 = NG )
  832.     /*-----------------------------------------------------------------*/
  833.     // value[0] = 項目名1
  834.     // value[1] = 項目名2
  835.     // value[2] = start_year
  836.     // value[3] = start_month
  837.     // value[4] = end_year
  838.     // value[5] = end_month
  839.     function CHECK_SET_TERM3 ($value{
  840.  
  841.         // 期間指定
  842.         if(isset($this->arrErr[$value[2]]|| isset($this->arrErr[$value[4]])) {
  843.             return;
  844.         }
  845.         $this->createParam($value);
  846.         $error 0;
  847.         if ( (strlen($this->arrParam[$value[2]]|| strlen($this->arrParam[$value[3]]0&& checkdate($this->arrParam[$value[3]]1$this->arrParam[$value[2]]) ) {
  848.             $this->arrErr[$value[2]] "※ " $value[0"を正しく指定してください。<br />";
  849.         }
  850.         if ( (strlen($this->arrParam[$value[4]]|| strlen($this->arrParam[$value[5]]0&& checkdate($this->arrParam[$value[5]]1$this->arrParam[$value[4]]) ) {
  851.             $this->arrErr[$value[4]] "※ " $value[1"を正しく指定してください。<br />";
  852.         }
  853.         if ( (strlen($this->arrParam[$value[2]]&& strlen($this->arrParam[$value[3]]&& (strlen($this->arrParam[$value[4]]|| strlen($this->arrParam[$value[5]]))) {
  854.  
  855.             $date1 $this->arrParam[$value[2]] .sprintf("%02d"$this->arrParam[$value[3]]);
  856.             $date2 $this->arrParam[$value[4]] .sprintf("%02d"$this->arrParam[$value[5]]);
  857.  
  858.             if (($this->arrErr[$value[2]] == "" && $this->arrErr[$value[5]] == ""&& $date1 $date2{
  859.                 $this->arrErr[$value[2]] "※ " .$value[0]"と" .$value[1]"の期間指定が不正です。<br />";
  860.             }
  861.         }
  862.     }
  863.  
  864.     //ディレクトリ存在チェック
  865.     function DIR_CHECK ($value{
  866.         if(isset($this->arrErr[$value[1]])) {
  867.             return;
  868.         }
  869.         $this->createParam($value);
  870.         if(!is_dir($this->arrParam[$value[1]])) {
  871.             $this->arrErr[$value[1]] "※ 指定した" $value[0"は存在しません。<br />";
  872.         }
  873.     }
  874.  
  875.     //ディレクトリ存在チェック
  876.     function DOMAIN_CHECK ($value{
  877.         if(isset($this->arrErr[$value[1]])) {
  878.             return;
  879.         }
  880.         if(strlen($this->arrParam[$value[1]]&& !ereg("^\.[^.]+\..+"$this->arrParam[$value[1]])) {
  881.             $this->arrErr[$value[1]] "※ " $value[0"の形式が不正です。<br />";
  882.         }
  883.     }
  884.  
  885.     /* 携帯メールアドレスの判定 */
  886.     // value[0] = 項目名 value[1] = 判定対象メールアドレス
  887.     function MOBILE_EMAIL_CHECK$value ){                // メールアドレスを正規表現で判定する
  888.         if(isset($this->arrErr[$value[1]])) {
  889.             return;
  890.         }
  891.         $this->createParam($value);
  892.         $objMobile new SC_Helper_Mobile_Ex();
  893.         if(strlen($this->arrParam[$value[1]]&& !$objMobile->gfIsMobileMailAddress($this->arrParam[$value[1]])) {
  894.             $this->arrErr[$value[1]] "※ " $value[0"は携帯電話のものではありません。<br />";
  895.         }
  896.     }
  897.     /**
  898.      * 禁止文字列のチェック
  899.      * value[0] = 項目名 value[1] = 判定対象文字列
  900.      * value[2] = 入力を禁止する文字列(配列)
  901.      *
  902.      * @example $objErr->doFunc(array("URL", "contents", $arrReviewDenyURL), array("PROHIBITED_STR_CHECK"));
  903.      */
  904.     function PROHIBITED_STR_CHECK$value {
  905.         ifisset($this->arrErr[$value[1]]|| empty($this->arrParam[$value[1]]) ) {
  906.             return;
  907.         }
  908.         $this->createParam($value);
  909.         $targetStr     $this->arrParam[$value[1]];
  910.         $prohibitedStr str_replace(array('|''/')array('\|''\/')$value[2]);
  911.  
  912.         $pattern '/' join('|'$prohibitedStr'/i';
  913.         if(preg_match_all($pattern$this->arrParam[$value[1]]$matches)) {
  914.             $this->arrErr[$value[1]] "※ " $value[0"は入力できません。<br />";
  915.         }
  916.     }
  917.  
  918.     /**
  919.      * PHPコードとして評価可能かチェックする.
  920.      *
  921.      * @access private
  922.      * @param array $value [0] => 項目名, [1] => 評価する文字列
  923.      * @return void 
  924.      */
  925.     function EVAL_CHECK($value{
  926.         if (isset($this->arrErr[$value[0]])) {
  927.             return;
  928.         }
  929.         $this->createParam($value);
  930.         if ($this->evalCheck($value[1]=== false{
  931.             $this->arrErr[$value[0]] "※ " $value[0" の形式が不正です。<br />";
  932.         }
  933.     }
  934.  
  935.     /**
  936.      * $value が PHPコードとして評価可能かチェックする.
  937.      *
  938.      * @access private
  939.      * @param mixed PHPコードとして評価する文字列
  940.      * @return mixed PHPコードとして評価できない場合 false,
  941.      *                評価可能な場合は評価した値
  942.      */
  943.     function evalCheck($value{
  944.         // falseは、正当な式と評価する。
  945.         if($value === "false"{
  946.             return true;
  947.         }
  948.         return @eval("return " $value ";");
  949.     }
  950.  
  951.     /**
  952.      * 未定義の $this->arrParam に空要素を代入する.
  953.      *
  954.      * @access private
  955.      * @param array $value 配列
  956.      * @return void 
  957.      */
  958.     function createParam($value{
  959.         foreach ($value as $key{
  960.             if (is_string($key|| is_int($key)) {
  961.                 if (!isset($this->arrParam[$key]))  $this->arrParam[$key"";
  962.             }
  963.         }
  964.     }
  965. }
  966. ?>

Documentation generated on Fri, 24 Feb 2012 14:00:01 +0900 by Seasoft